# -*- coding: utf-8 -*-
'''
@File: __init__.py.py
@Time: 2023/5/5 23:33
@Author: sunda
'''
from datetime import timedelta

"""构建app，注册蓝图"""

from flask import Flask
from config import BaseConfig
from flask_login import LoginManager
from flask_sqlalchemy import SQLAlchemy

login_manager = LoginManager()
login_manager.session_protection = 'strong' #使用会话保护的模式。这可以是'basic'（默认）或'strong'，或None禁用
login_manager.login_view = 'login' #验证失败跳转的界面
db = SQLAlchemy()


def register_bp(app):
    """
    注册蓝图
    :param app:
    :return:
    """
    from .app_login import login as login_blueprint
    app.register_blueprint(login_blueprint)


def database(app, db):
    """
    初始化数据库
    :param app:
    :return:
    """
    db.init_app(app)
    db.create_all()
    db.session.commit()


def create_app():
    my_app = Flask(__name__,template_folder='templates')
    with my_app.app_context():
        # app注册蓝图
        register_bp(my_app)
        # app加载配置
        my_app.config.from_object(BaseConfig)
        # 数据库管理对象
        database(my_app, db)
        # 用于登录验证
        login_manager.init_app(my_app)
        login_manager.login_view = 'login.login'
    return my_app